package gui;

import utils.component.FilePropertyReader;
import utils.component.Property;

import javax.swing.*;
import java.awt.*;

/**
 * @Skyler
 * Date: 14.06.13
 * Time: 12:03
 */
public abstract class Window extends JFrame {

    protected Property property;

    public Window() {
        FilePropertyReader propertyReader = FilePropertyReader.getInstance();
        property = propertyReader.getProperties();
    }

    public void openWindow() {
        perform();
    }

    /**
     * Цикл создание нового окна
     */
    protected void perform() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                initComponent();
                initLocation();
                addToWindowComponent();
                initWindowOption();
            }
        });
    }

    /**
     * Инициализация стандартных настроек для окна
     */
    protected void initWindowOption() {
        setTitle("Kijango");
        setLocationRelativeTo(null);
        setResizable(false);
        setAlwaysOnTop(true);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setSize(property.getScreenSize());
        setVisible(true);
    }

    /**
     * Добавление компанентов к фрейму
     */
    protected abstract void addToWindowComponent();

    /**
     * Инициализация местонахождения обьектов
     */
    protected abstract void initLocation();

    /**
     *  Инициализая компонентов окна
     */
    protected abstract void initComponent();

}
